﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using SW_SoftBully.Models.ModuloAdministracion.Usuario;
using SW_SoftBully.Models.ModuloAdministracion.DepartamentoPeru;
using SW_SoftBully.Models.ModuloAdministracion.ProvinciaPeru;
using SW_SoftBully.Models.ModuloAdministracion.DistritoPeru;
using SW_SoftBully.Models.ModuloAdministracion.Cargo;
using SW_SoftBully.Models.ModuloAdministracion.Seguro;
using SW_SoftBully.Models.ModuloAdministracion.TipoDoc;
using SW_SoftBully.Models;
using System.Json;
using log4net;


namespace SW_SoftBully.Controllers.ModuloAdministracion.Usuario
{
    public class UsuarioController : Controller
    {
        private SoftBullyDB db = new SoftBullyDB();
        UsuarioFacade usuarioFacade = new UsuarioFacade();
        CargoFacade cargoFacade = new CargoFacade();
        SeguroFacade seguroFacade = new SeguroFacade();
        TipoDocFacade tipodocFacade = new TipoDocFacade();
        DepartamentoPeruFacade departamentoPeruFacade = new DepartamentoPeruFacade();
        ProvinciaPeruFacade provinciaPeruFacade = new ProvinciaPeruFacade();
        DistritoPeruFacade distritoPeruFacade = new DistritoPeruFacade();

        public ActionResult Index()
        {
            return View();
        }

        public ActionResult Usuario()
        {
            return View();
        }

        public ActionResult RegistrarUsuario()
        {
            return View();
        }

        public ActionResult BuscarUsuario()
        {
            return View();
        }

        [HttpPost]
        public JsonResult registrarUsuario(UsuarioBean usuario, PersonalBean personal, VendedorBean vendedor, ClienteBean cliente, HabitanteBean habitante)
        {
            if (usuarioFacade.existeusuario(usuario.user))
            {
                return Json(new { me = "El usuario ya existe" });
            }

            if (usuarioFacade.existenrodoc(usuario.tipo_documento, usuario.nro_documento_persona))
            {
                return Json(new { me = "El número de documento ya existe" });
            }

            string conexion = usuarioFacade.RegistrarUsuario(usuario, personal, vendedor, cliente, habitante);

            if (conexion == "Bien")
            {
                return Json(new { me = "Se ingreso correctamente el usuario" });
                //Console.WriteLine("Hola");
            }
            else
            {
                return Json(new { me = "Existe un error en registrar usuario" });
                //Console.WriteLine("Hola");
            }
            ////System.Diagnostics.Debug.WriteLine("-----------> hola");

        }

        [HttpPost]
        public JsonResult modificarUsuario(UsuarioBean usuario, PersonalBean personal, HabitanteBean habitante)
        {
            var nro_documento_ant = usuario.nro_documento_persona;
            if (!usuarioFacade.mismousuario(usuario.user, usuario.id_persona))
            {
                if (usuarioFacade.existeusuario(usuario.user))
                {
                    return Json(new { me = "El usuario ya existe" });
                }
            }

            if (!usuarioFacade.mismonrodoc(usuario.tipo_documento, usuario.nro_documento_persona, usuario.id_persona))
            {
                if (usuarioFacade.existenrodoc(usuario.tipo_documento, usuario.nro_documento_persona))
                {
                    return Json(new { me = "El número de documento ya existe" });
                }
            }
            if (usuario.Id_Cargo == 12)
            {

                List<HabitanteBean> listaUsuario = usuarioFacade.ListarHabitanteMod(habitante);
                return Json(new { listaUsuario });
            }
            else
            {
                if (usuario.Id_Cargo == 5)
                {
                    List<PersonalBean> listaUsuario = usuarioFacade.ListarPersonalMod(personal);
                    return Json(new { listaUsuario });
                }
                else
                {

                    List<UsuarioBean> listaUsuario = usuarioFacade.ListarUsuarioMod(usuario, personal, habitante);
                    return Json(new { listaUsuario });
                }
            }
        }

        [HttpPost]
        public JsonResult buscarUsuario(UsuarioBean usuario)
        {
            List<UsuarioBean> listaUsuario = usuarioFacade.ListarUsuario(usuario);
            return Json(new { listaUsuario });
        }
        [HttpPost]
        public JsonResult eliminarUsuario(UsuarioBean usuario)
        {
            string conexion = usuarioFacade.eliminarUsuario(usuario);

            if (conexion == "Bien")
            {
                return Json(new { me = "Se elimino correctamente" });
                //Console.WriteLine("Hola");
            }
            else
            {
                return Json(new { me = "Existe un error al eliminar usuario" });
                //Console.WriteLine("Hola");
            }
        }

        [HttpPost]
        public JsonResult cargarTipoDoc(TipoDocBean tipodoc)
        {
            //System.Diagnostics.Debug.WriteLine("--------------------------------------________HDP> " + banco.NombreComercial);

            List<TipoDocBean> listaTipoDoc = tipodocFacade.ListarTipoDoc(tipodoc);

            //System.Diagnostics.Debug.WriteLine("--------------------------------------_________MIERDA> " + banco.conexion);

            return Json(new { listaTipoDoc });
        }

        [HttpPost]
        public JsonResult cargarSeguro(SeguroBean seguro)
        {
            //System.Diagnostics.Debug.WriteLine("--------------------------------------________HDP> " + banco.NombreComercial);

            List<SeguroBean> listaSeguros = seguroFacade.ListarSeguro(seguro);

            //System.Diagnostics.Debug.WriteLine("--------------------------------------_________MIERDA> " + banco.conexion);

            return Json(new { listaSeguros });
        }

        [HttpPost]
        public JsonResult cargarCargos(CargoBean cargo)
        {
            //System.Diagnostics.Debug.WriteLine("--------------------------------------________HDP> " + banco.NombreComercial);

            List<CargoBean> listaCargos = cargoFacade.ListarCargo(cargo);

            //System.Diagnostics.Debug.WriteLine("--------------------------------------_________MIERDA> " + banco.conexion);

            return Json(new { listaCargos });
        }


        [HttpPost]
        public JsonResult cargarDepartamentos(DepartamentoPeruBean departamento)
        {
            System.Diagnostics.Debug.WriteLine("--------------------------------------________HDP> " + departamento.Nombre);

            List<DepartamentoPeruBean> listaDepartamentoPeru = departamentoPeruFacade.ListarDepartamentoPeru(departamento);

            System.Diagnostics.Debug.WriteLine("--------------------------------------_________MIERDA> " + departamento.conexion);

            return Json(new { listaDepartamentoPeru });
        }

        [HttpPost]
        public JsonResult cargarProvincias(DepartamentoPeruBean departamento)
        {
            System.Diagnostics.Debug.WriteLine("--------------------------------------________HDP> " + departamento.Nombre);

            List<ProvinciaPeruBean> listaProvinciaPeru = provinciaPeruFacade.ListarProvinciaPeru(departamento);

            System.Diagnostics.Debug.WriteLine("--------------------------------------_________MIERDA> " + departamento.conexion);

            return Json(new { listaProvinciaPeru });
        }

        [HttpPost]
        public JsonResult cargarDistritos(ProvinciaPeruBean provincia)
        {
            System.Diagnostics.Debug.WriteLine("--------------------------------------________HDP> " + provincia.Nombre);

            List<DistritoPeruBean> listaDistritoPeru = distritoPeruFacade.ListarDistritoPeru(provincia);

            System.Diagnostics.Debug.WriteLine("--------------------------------------_________MIERDA> " + provincia.conexion);

            return Json(new { listaDistritoPeru });
        }

    }
}
